import axios from 'axios'

let instance = axios.create({
    // 请求的真实地址
    baseURL: 'http://localhost:8080',
    // baseURL: '/api',
    timeout: 5000
})

let toast;

//请求拦截
instance.interceptors.request.use(config => {
    //请求前的处理
  
    return config
})

//响应拦截
instance.interceptors.response.use(res => {
    //获取到响应结果后处理的业务
    return res //该返回对象会传到请求方法的响应对象中
}, err => {
    // 响应错误处理
    console.log(err);
    return Promise.reject(err);
})

/**
 * 用于请求的公共方法
 * @param {*} option 配置项，method请求方法，path路由，params参数
 */
async function http(option = {}) {
    //请求结果
    let result = null

    //判断请求方法
    if (option.method === 'get' || option.method === 'delete') {
        await instance[option.method](
            option.path, {
                params: option.params
            }
        ).then(res => {
            result = res.data
        }).catch(err => {
            result = err
        })
    } else if (option.method === 'put' || option.method === 'post' || option.method === 'patch') {
        await instance[option.method](
            option.path,
            option.params
        ).then(res => {
            result = res.data
        }).catch(err => {
            result = err
        })
    }
    return result
}
/**
 * 在main.js中引入就可以使用了
 * @import http from "./http/index";
 * @ Vue.prototype.$http = http;
 */
export default http